home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1996 February: Tool Chest / Apple Developer CD Series Tool Chest February 1996 (Apple Computer)(1996).iso / Sample Code / AOCE Sample Code / PowerTalk Access Modules / Sample PMSAM / PMSAM Framework / RoboSamSlot / PMSAMResources.cp < prev    next >
Encoding:
C/C++ Source or Header  |  1995-07-28  |  2.0 KB  |  86 lines  |  [TEXT/MPS ]

  1. /*
  2.     File:        PMSAMResources.cp
  3.  
  4.     Contains:    xxx put contents here xxx
  5.  
  6.     Written by:    Tim Harnett
  7.  
  8.     Copyright:    © 1995 by Apple Computer, Inc., all rights reserved.
  9.  
  10.     Change History (most recent first):
  11.  
  12.          <1>     1/27/95    TMH        new for dir system mapping table
  13.                  1/25/95    TMH        xxx put comment here xxx
  14.  
  15.     To Do:
  16. */
  17.  
  18. #ifndef __RESOURCES__
  19. #include <Resources.h>
  20. #endif
  21.  
  22. #ifndef __STRING__
  23. #include "String.h"
  24. #endif
  25.  
  26.  
  27. #ifndef __PMSAMResources__
  28. #include "PMSAMResources.h"
  29. #endif
  30.  
  31. #pragma segment PMSAMResources
  32.  
  33. //--------------------------------------------------------
  34. //        C D i r E x t T y p e T a b l e I t e r a t o r
  35. //-----------------------------------------------------------------------------------
  36. CDirExtTypeTableIterator::CDirExtTypeTableIterator(short resID)
  37. {
  38.  
  39.     fCurrentIndex    = 0;
  40.     fNumOfExtTypes    = 0;
  41.     fCurrentOffset    = 0;
  42.     
  43.     fDirExtTypeTable =  (DirExtTypeTable **)Get1Resource('dxtt',resID);
  44.     
  45.     
  46.     MoveHHi((Handle)fDirExtTypeTable);        
  47.     HLock((Handle)fDirExtTypeTable);        //     we assume its locked down.
  48.     
  49.     if( fDirExtTypeTable == 0 )
  50.         return;
  51.         
  52.     fNumOfExtTypes = (*fDirExtTypeTable)->count;
  53.  
  54. }
  55.  
  56.  
  57. //-----------------------------------------------------------------------------------
  58. DirExtTypeEntry* CDirExtTypeTableIterator::FirstDirExtType()
  59. {
  60.     fCurrentIndex = 1;
  61.     fCurrentOffset    = 0;
  62.     if( More() )
  63.         return  (DirExtTypeEntry*) (((char*)&(*fDirExtTypeTable)->dirExtTypeDesc) + fCurrentOffset);
  64.     
  65.     return 0;
  66.         
  67. }
  68.  
  69.  
  70. //-----------------------------------------------------------------------------------
  71. DirExtTypeEntry* CDirExtTypeTableIterator::NextDirExtType()
  72. {
  73.     fCurrentIndex++;
  74.     if( More() ) {
  75.         DirExtTypeEntry* dirExtType =  (DirExtTypeEntry*) (((char*)&(*fDirExtTypeTable)->dirExtTypeDesc) + fCurrentOffset);
  76.         
  77.         fCurrentOffset += sizeof(OSType) + 4 + dirExtType->dirSysName[0]+1;        // the size of each entry
  78.         
  79.         fCurrentOffset += (fCurrentOffset & 1);                                //    align it.
  80.         
  81.         return  (DirExtTypeEntry*) (((char*)&(*fDirExtTypeTable)->dirExtTypeDesc) + fCurrentOffset);
  82.     }
  83.     
  84.     return 0;
  85. }
  86.